/**   
 * Copyright © 2019 dream horse Info. Tech Ltd. All rights reserved.
 * @Package: com.gitee.mybatis.fl.util
 * @author: flying-cattle  
 * @date: 2019年4月9日 下午8:15:25 
 */
package com.gitee.flying.cattle.mdg.util;

import com.gitee.flying.cattle.mdg.convert.DateType;
import com.gitee.flying.cattle.mdg.convert.MySqlTypeConvert;

import java.util.Locale;

/**
 * Copyright: Copyright (c) 2019 
 * 
 * <p>说明： 获奖java中需要的驼峰命名</P>
 * @version: v3.0.0
 * @author: flying-cattle
 * 
 * Modification History:
 * Date         	Author          Version          Description
 *---------------------------------------------------------------*
 * 2019年4月9日      		flying-cattle   v3.0.0           initialize
 */
public class MySqlToJavaUtil {

	/**
	 * 小驼峰转大驼峰</p>
	 * @param string 表名
	 * @return String
	 */
	public static String lowerToUpperCase(String string) {
		char[] cs = string.toCharArray();
		cs[0] -= 32;
		return String.valueOf(cs);
	}
	
	/**
     * 将带_  的字段转换成大驼峰</p>
     * @param string 表名
     * @return String
     */
	public static String getClassName(String string) {
		string=changeToJavaFiled(string);
		StringBuilder sbuilder = new StringBuilder();
		char[] cs = string.toCharArray();
		cs[0] -= 32;
		sbuilder.append(String.valueOf(cs));
		return sbuilder.toString();
	}
	
	/**
     * <p>说明:获取字段名，把"_"后面字母变大写,变成小驼峰</p>
     * @param string  带_的字段
     * @return String
     */
	public static String changeToJavaFiled(String string) {
		String toLowerCase = string.toLowerCase(Locale.ROOT);
		String[] fields = toLowerCase.split("_");
		if (fields.length > 1){
			StringBuilder sbuilder = new StringBuilder(fields[0]);
			for (int i = 1; i < fields.length; i++) {
				char[] cs = fields[i].toCharArray();
				cs[0] -= 32;
				sbuilder.append(String.valueOf(cs));
			}
			return sbuilder.toString();
		}else {
			return toLowerCase;
		}
	}
	

	/**
     * <p>说明:把sql的数据类型转为java需要的类型</p>
     * @param sqlType  sql类型
     * @return String  java类型
     */
	public static String jdbcTypeToJavaType(String sqlType) {
		MySqlTypeConvert typeConvert= new MySqlTypeConvert();
		return typeConvert.processTypeConvert(DateType.ONLY_DATE, sqlType).getType();
	}
	
	/**
     * <p>说明:把sql的数据类型转为java需要的类型</p>
     * @param sqlType  sql类型
     * @return String  java类型
     */
	public static String jdbcTypeToJavaTypePck(String sqlType) {
		MySqlTypeConvert typeConvert= new MySqlTypeConvert();
		return typeConvert.processTypeConvert(DateType.ONLY_DATE, sqlType).getPkg();
	}
}
